package java_1_24.leetcode;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 双队列实现栈
 */
public class Num225_MyStack {
    public Num225_MyStack() {
    }
    // q1是存储元素的队列
    private Queue<Integer> q1 =new LinkedList<>();
    //q2是辅助队列，添加元素后保证q2永远为空
    private Queue<Integer> q2=new LinkedList<>();
    public void push(int x){
        //新元素直接入q2,新元素就在q2的队首
        q2.offer(x);
        while(!q1.isEmpty()){
            q2.offer(q1.poll());//q1出队入q2
        }
        //走到这里q1为空，q2为存储元素的队列，互换引用的指向
        //互换指向之后仍然可以保证q1是存储元素的队列，q2为空
        Queue<Integer> temp=q1;
        q1=q2;
        q2=temp;
    }
    public int pop(){
        return q1.poll();
    }
    public int top(){
        return q1.peek();
    }
    public boolean empty(){
        return q1.isEmpty();
    }

}
